Computing devices, personal computers, workstations, and servers (hereinafter “computer” or “computers”) typically include a basic input/output system (BIOS) as an interface between computer hardware (e.g., a processor, chipsets, memory, etc.) and an operating system (OS). The BIOS includes firmware and/or software code to initialize and enable low-level hardware services of the computer, such as basic keyboard, video, disk drive, input/output (I/O) port, and chipset drivers associated with a computer motherboard.
A computer that executes separate and multiple copies of an OS on computer hardware is referred to as a partitioned platform. Each instance of a separate OS on the platform is referred to as a partition of the platform and may use shared hardware resources (e.g., same central processing unit (CPU), same bus, etc.), yet use non-overlapping subset(s) of memory (e.g., random access memory (RAM), read-only memory (ROM), dynamic random access memory (DRAM), hard-drive space, etc.).
A partitioned platform may also have dedicated resources instantiated by server hard partitioning. Servers that employ hard partitioning may have a complete set of resources fully replicated in each partition. A rich (i.e., complete) set of resources may include multiple CPU's, large amounts of memory, and many I/O devices. As such, each partition, separated by various hardware mechanisms, typically includes a full BIOS that operates fully and independently. The hardware mechanisms for separating partitions, such as a service processor, are expensive to implement and time consuming.
Whether the underlying resources (i.e., the hardware and associated systems) are shared or dedicated, each partition executes in an environment that is independent of other environments within other partitions of the platform. Because the partitions operate independently and are unaware of the existence of any other partitions on the platform, the applications executing on their particular partitions are secure from one another. In such a case, even if one application contains a security flaw, such vulnerability is limited to only the breached partition, thereby leaving any other partitions unaffected. However, such independence results in each partition's BIOS executing all of its initialization instructions, even if one or more of the partitions has already executed such instructions.
FIG. 1 is a diagram showing how a known computer platform 100 may be configured to include multiple partitions. While computer platforms may have any number of separate partitions, the platform 100 of FIG. 1 includes an example first partition 105, an example second partition 110, and an example third partition 115. Each of the partitions 105, 110, 115 includes a corresponding BIOS 120, 125, 130, a corresponding OS 135, 140, 145, and any number of corresponding applications 150, 155, 160. While each of the partitions 105, 110, 115 of FIG. 1 are created via server style hard partitions, the partitions 105, 110, 115 may also be created by a virtual machine monitor (VMM), discussed in further detail below. Each of the partitions uses platform hardware 165 in a shared manner, a dedicated manner, or various combinations of shared and dedicated use.
Prior to partition creation, the platform hardware 165 initiates a CPU reset upon power-up. As discussed in further detail below, one of the multiple processors 170 is typically hard-coded to access a specific memory location, such as a fetch to BIOS 175 boot instructions. The BIOS 175 initializes memory 180 and a base minimum amount of platform hardware 165 to eventually allow each partition to run independently. However, creating each partition also requires initialization of a service processor 185. The service processor 185 thereafter creates each partition 105, 110, 115 in a serial manner. As a result, each of the partition BIOS 120, 125, 130 performs initialization in a serial manner. Initialization may include, but is not limited to, power on self test (POST) procedures for each CPU 170 and memory 180. Furthermore, because the platform hardware BIOS 175 already initialized the memory 180, the serial creation of partitions by the service processor 185 results in redundant procedures. For example, such POST procedures already performed by the platform BIOS 175 are repeated when each partition BIOS 120, 125, 130 also performs memory 180 initialization, thereby wasting significant amounts of time.